I create a dataframe with distinct column names and use rename
to create columns with same name.
<code>import pandas as pd
df = pd.DataFrame({
"a_1": ["x", "x"],
"a_2": ["", ""],
"b_1": ["", ""],
"a_3": ["", "y"],
"c_1": ["z", "z"],
})
names = {
"a_1": "a",
"a_2": "a",
"a_3": "a",
"b_1": "b",
"c_1": "c",
}
df2 = df.rename(columns=names)
</code>
<code>import pandas as pd
df = pd.DataFrame({
"a_1": ["x", "x"],
"a_2": ["", ""],
"b_1": ["", ""],
"a_3": ["", "y"],
"c_1": ["z", "z"],
})
names = {
"a_1": "a",
"a_2": "a",
"a_3": "a",
"b_1": "b",
"c_1": "c",
}
df2 = df.rename(columns=names)
</code>
import pandas as pd
df = pd.DataFrame({
"a_1": ["x", "x"],
"a_2": ["", ""],
"b_1": ["", ""],
"a_3": ["", "y"],
"c_1": ["z", "z"],
})
names = {
"a_1": "a",
"a_2": "a",
"a_3": "a",
"b_1": "b",
"c_1": "c",
}
df2 = df.rename(columns=names)
This produces
<code> a a b a c
0 x z
1 x y z
</code>
<code> a a b a c
0 x z
1 x y z
</code>
a a b a c
0 x z
1 x y z
How to join values in the columns with same name into a list?
<code>out = pd.DataFrame({
"a": [["x"], ["x", "y"]],
"b": [[""], [""]],
"c": [["z"], ["z"]],
})
a b c
0 [x] [] [z]
1 [x, y] [] [z]
</code>
<code>out = pd.DataFrame({
"a": [["x"], ["x", "y"]],
"b": [[""], [""]],
"c": [["z"], ["z"]],
})
a b c
0 [x] [] [z]
1 [x, y] [] [z]
</code>
out = pd.DataFrame({
"a": [["x"], ["x", "y"]],
"b": [[""], [""]],
"c": [["z"], ["z"]],
})
a b c
0 [x] [] [z]
1 [x, y] [] [z]
Bad attempt
I suspect this can be resolved with lambda
<code>for c in ['a', 'b', 'c']:
df2[c] = df2[c].apply(lambda x: x.tolist() if x.any() else [], axis=1)
</code>
<code>for c in ['a', 'b', 'c']:
df2[c] = df2[c].apply(lambda x: x.tolist() if x.any() else [], axis=1)
</code>
for c in ['a', 'b', 'c']:
df2[c] = df2[c].apply(lambda x: x.tolist() if x.any() else [], axis=1)
This however produces
<code>TypeError: <lambda>() got an unexpected keyword argument 'axis'
</code>
<code>TypeError: <lambda>() got an unexpected keyword argument 'axis'
</code>
TypeError: <lambda>() got an unexpected keyword argument 'axis'
Any idea?