I have following code to load dataframe
import pandas as pd
ufo = pd.read_csv('csv_path')
print(ufo.loc[[0,1,2] , :])
which gives following output, see the structure of the csv
City Colors Reported Shape Reported State Time
0 Ithaca NaN TRIANGLE NY 6/1/1930 22:00
1 Willingboro NaN OTHER NJ 6/30/1930 20:00
2 Holyoke NaN OVAL CO 2/15/1931 14:00
Now, I want to add an extra column based on existing column. I have a list which consist of indices of participating columns. It can be 0,1 or 0,2,3 or 1,2,3 anything.
I need to create it dynamically. I could come up with following
df1['combined'] = df1['City']+','+df1['State']
Putting index doesn't seem to work.
I want to join those columns. using ','.join()
Assuming the data types of all the columns you want to join
are str
, you can use []
with integer to pick up the columns and use apply
to join them:
df[[0,2,3]].apply(','.join, axis=1)
#0 Ithaca,TRIANGLE,NY
#1 Willingboro,OTHER,NJ
#2 Holyoke,OVAL,CO
#dtype: object
If the list of indices is l
, you can use pd.Series.cat
:
df[df.columns[l[0]]].astype(str).str.cat([df[df.columns[i]].astype(str) for i in l[1: ]], sep=',')
Example
In [18]: df = pd.DataFrame({'a': [1, 2], 'b': [2, 'b'], 'c': [3, 'd']})
In [19]: df[df.columns[l[0]]].astype(str).str.cat([df[df.columns[i]].astype(str) for i in l[1: ]], sep=',')
Out[19]:
0 1,2
1 2,b
Name: a, dtype: object
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With