我正在尝试在数据框中的其他列中添加一些额外的数据。
考虑以下示例代码:
import pandas
import numpy
def more_data(d):
return 1, 2
df = pandas.DataFrame({"A":[1, 2, 3], "B":[17, 16, 15]})
x = df.apply(more_data, axis=1)
df1 = pandas.DataFrame(x)
df2 = pandas.concat([df, df1], axis=1)
print(df2)
输出为:
A B 0
0 1 17 (1, 2)
1 2 16 (1, 2)
2 3 15 (1, 2)
毫不奇怪,因为apply()返回一个元组序列,该序列将作为元组列忠实地添加到数据帧中。但是,我想要的是在元组中返回值的另外两列。那怎么办?
答案 0 :(得分:1)
您与自己的解决方案非常接近,如果将数据框转换为列表,然后将其构造为再次定义列的数据框,则可以使用:
def more_data(d):
return 1, 2
df = pd.DataFrame({"A":[1, 2, 3], "B":[17, 16, 15]})
x = df.apply(more_data, axis=1)
df1 = pd.DataFrame(x.tolist(), columns=['Col1', 'Col2']) # <-- line which is different
df2 = pd.concat([df, df1], axis=1)
A B Col1 Col2
0 1 17 1 2
1 2 16 1 2
2 3 15 1 2
答案 1 :(得分:0)
尝试一下
import pandas
import numpy
def more_data(d):
return 1, 2
df = pandas.DataFrame({"A":[1, 2, 3], "B":[17, 16, 15]})
x = df.apply(more_data, axis=1)
df1 = pandas.DataFrame(x)
df1= pandas.concat([df, df1], axis=1)
df1[['new_1', 'new_2']] = pandas.DataFrame([list(x) for x in df1[0]])
# Result
print(df1)
A B 0 new_1 new_2
0 1 17 (1, 2) 1 2
1 2 16 (1, 2) 1 2
2 3 15 (1, 2) 1 2
答案 2 :(得分:0)
您似乎能够获得的最接近的是<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>6.8.0</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>1.74.0</version>
</dependency>
:
df.assign
您也可以分配给系列,因此必须首先将每个列的结果放入系列中。那可能很简单:
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
df.assign(temp1=0, temp2=5)
# x y temp1 temp2
# 0 1 4 0 5
# 1 2 5 0 5
# 2 3 6 0 5